package com.zs.propertymanage.handler;

import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import com.zs.propertymanage.annotation.SystemLog;
import com.zs.propertymanage.dataObj.entity.PatrolPlan;
import com.zs.propertymanage.service.impl.PatrolService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.Date;

@Component
public class PatrolHandler {

    @Autowired
    private PatrolService patrolService;

    /**
     * 测试任务
     */
    @XxlJob("testHandler")
    @SystemLog(name = "生成测试任务")
    public void testHandler() {
        XxlJobHelper.handleSuccess("本次测试任务调度成功");
        System.err.println("[测试]任务调度成功 " + new Date());

        patrolService.generatePatrolTask(PatrolPlan.FREQUENCY_OTHER);

    }

    /**
     * 日任务（每天8:00触发一次）
     */
    @XxlJob("dayHandler")
    @SystemLog(name = "生成日任务")
    public void dayHandler() {
        XxlJobHelper.handleSuccess("日任务调度成功 " + new Date());
        System.err.println("[日]任务调度成功 " + new Date());

        patrolService.generatePatrolTask(PatrolPlan.FREQUENCY_DAY);

    }

    /**
     * 周任务（每周一8:00触发一次）
     */
    @XxlJob("weekHandler")
    @SystemLog(name = "生成周任务")
    public void weekHandler() {
        XxlJobHelper.handleSuccess("周任务调度成功 " + new Date());
        System.err.println("[周]任务调度成功 " + new Date());

        patrolService.generatePatrolTask(PatrolPlan.FREQUENCY_WEEK);

    }

    /**
     * 月任务（每月1号8:00触发一次）
     */
    @XxlJob("monthHandler")
    @SystemLog(name = "生成月任务")
    public void monthHandler() {
        XxlJobHelper.handleSuccess("月任务调度成功 " + new Date());
        System.err.println("[月]任务调度成功 " + new Date());

        patrolService.generatePatrolTask(PatrolPlan.FREQUENCY_MONTH);

    }

    /**
     * 季任务（每个1、4、7、10月1号8:00触发一次）
     */
    @XxlJob("quarterHandler")
    @SystemLog(name = "生成季任务")
    public void quarterHandler() {
        XxlJobHelper.handleSuccess("季任务调度成功 " + new Date());
        System.err.println("[季]任务调度成功 " + new Date());

        patrolService.generatePatrolTask(PatrolPlan.FREQUENCY_QUARTER);

    }

    /**
     * 年任务（每年1月1号8:00触发一次）
     */
    @XxlJob("yearHandler")
    @SystemLog(name = "生成年任务")
    public void yearHandler() {
        XxlJobHelper.handleSuccess("年任务调度成功 " + new Date());
        System.err.println("[年]任务调度成功 " + new Date());

        patrolService.generatePatrolTask(PatrolPlan.FREQUENCY_YEAR);

    }
}
